package com.me.seckill.service;

/**
 * Function:
 *
 * @author crossoverJie
 *         Date: 01/05/2018 14:09
 * @since JDK 1.8
 */
public interface OrderService {

    /**
     * 根据 秒杀商品的库存id 删除订单
     * @param sid
     * @return
     */
    int deleteByStockId(int sid);

    /**
     * 1、超卖下单接口
     *
     * @param sid 库存ID
     * @return 订单ID
     */
    int createWrongOrder(int sid) throws Exception;


    /**
     * 2、乐观锁更新库存
     *
     * @param sid 库存ID
     * @return 订单ID
     */
    int createOptimisticOrder(int sid) throws Exception;


    /**
     * 4、乐观锁更新库存 + 限流 + Redis库存
     *
     * @param sid 库存ID
     * @return 订单ID
     * @throws Exception
     */
    int createOptimisticOrderUseRedis(int sid) throws Exception ;


    /**
     * 5、乐观锁更新库存 + 限流 + Redis库存 + MQ异步创建订单
     *
     * 利用 MQ 异步写订单
     * @param sid 库存ID
     * @throws Exception
     */
    void createOptimisticOrderUseRedisAndMQ(int sid);
}
